查看原文
其他

面向数智营销的 AI FAAS 解决方案

天柏 阿里妈妈技术 2023-04-04

目录:

1.  背景
2.  AI FAAS解决方案

3.  FAAS研发平台

4.  DolphinSQL服务

5.  实时特征SQL化生产

6.  典型案例

7.  效果

8.  展望

9.  引用

▐ 背景

随着互联网人口增长红利逐步减缓和行业竞对增强,用户流量增长日益放缓,在广告主面对阿里妈妈复杂营销产品矩阵情况下,如何利用算法能力更加精细化赋能广告主,从而提升大盘广告营收和构建客户生态成为新的增长点。广告主工具侧算法同学(下简称“B端算法”)会结合客户的不同营销诉求(拉新、蓄水、转化、加购收藏等营销目标)提供丰富的营销工具,帮助广告主提升投放效率,并帮助阿里妈妈客户增长以及大盘营收;由于广告主工具侧算法人手少、场景多,要针对不同的场景来搭建不同的服务,导致算法同学会面临服务多、开发成本高、运维成本高、大促保障难等诸多问题;通过和广告主工具侧算法同学深入沟通,主要面临如下问题:

1. 迭代效率问题

  • 开发成本高:场景多(至少50+的场景),服务多,每个服务都需要耗费大部分时间来搭建服务,申请机器资源;由于历史原因部分服务以C++来实现,开发和迭代成本高;

  • 监控体系不健全:整个服务的监控运维体系不健全,算法同学没有时间来完善监控服务,导致服务出问题无法及时的发现;

  • 运维成本高:  服务比较多,运维体系不健全,服务出现问题,排查困难,另外升级迭代成本高。

2. 核心算子复用性不足

  • 核心算子耦合在业务逻辑中,无法实现各个业务场景快速。

3. 场景复杂,特征时效性低

  • 广告主工具侧场景复杂,没有统一的实时特征生产流程,且目前模型使用的特征都是离线T+1,无法有效捕获到用户行为。

针对广告主工具侧算法场景存在的问题,以及广告主工具侧性能(QPS较低、rt容忍度高)特性,算法和工程希望合力设计一种更轻量方案,可以让算法同学更专注业务逻辑,而工程同学更好专注工程框架,从而实现效率的极大提升,不同业务场景也可以快速享受到工程框架升级所带来的效果提升; 通过和直通车客户增长算法同学紧密合作,我们利用云原生FAAS+基于MPP统一SQL引擎(下称为Dolphin)打造了一套面向广告主工具侧算法解决方案,成功将算法服务整体升级到新的AI FAAS框架,算法侧的迭代效率也有了质的提升(单服务搭建从1-2周降至1-2天),多个场景算子复用也取得了不错的业务收益。这里将我们面向数智营销场景的AI FAAS经验实践做个总结,希望对大家有些许帮助。

▐ AI FAAS解决方案

针对广告主工具算法侧的核心诉求,我们从三个方面提供了轻量级的解决方案;针对迭代效率问题,我们将C++开发为主的服务升级为以Java为主的云原生faas平台,从编码层面提升了迭代效率,并基于faas打造了一整套集成开发、灰度、监控、运维、实验、压测、日志检索、调试等流程的一站式AI FAAS研发平台,算法更专注业务逻辑的迭代,性能和工程链路问题交给工程同学。

核心算子复用性能力,我们将算法侧核心算子统一沉淀到到Dolphin插件中,统一以DolphinSQL服务化方式对外输出,实现了核心算子的统一,并基于极光平台支持算子的交互式分析,方便核心算子的多场景服务。

针对B端场景复杂,特征时效性问题,我们和算法同学一起梳理了特征工程链路,建立了基于埋点到特征生产的规范化接入流程,并基于SQL引擎实现了特征的SQL化生产,简化实时特征开发和探查。

▐ Faas研发平台

基于Faas[1]我们打造了一套B端算法研发平台,主要包含研发管控平台、算法工程框架、Dolphin引擎、运维工具等部分。
研发管控平台,可支持服务一键拉起、调试、日志记录、日志检索以及实验等能力;faas的发布能力基于阿里云函数计算[2],可支持服务的多机房部署、灰度、监控、自动扩缩容能力,无需申请机器资源,可实现快速交付、智能弹性、更低成本。
Faas服务的工程框架,基于SpringCloud[3]容器来定制化业务工程模板,在工程模板内部打通常用中间件(Diamond/Hsf/IGraph/Redis/SLS/Dolphin引擎/Sunfire等)以及提供常用的功能函数类库(LogUtil/Concurrent等),实现上层业务开发一键接入,业务层整体开发体验和SpringBoot保持一致。
运维工具包含准确性验证、压测、监控等,通过flink任务将faas日志实时回流到ODPS[4]表(对应离线HIVE表),用于在线日志分析和错误排查,同时在线查询请求可生成压测数据,用于上线前准确性验证以及大促压测;规范了业务侧埋点规范,可实现一键埋点sunfire[6] (监控平台)监控可见,实现业务侧核心数据的实时感知。

▐ DolphinSQL服务

一般算法使用的工程技术架构大多源自C端技术,特点是可支撑高性能、高并发,不足是使用成本高,主要是因为架构解耦分离,各组件负责一类功能,这样对于复杂的算法场景,需要在主程序方法中调用各种不同客户端才可以实现,这对于工程同学都需要不小工作量去学习不同组件并整合进项目,让B端算法同学亲自操刀去开发的成本更是不低。面对B端算法场景,我们希望以统一SQL(类似数据湖[5])的方式来对外提供服务,屏蔽底层组件细节;对于算法同学而言SQL是基本技能,因此服务SQL化对于算法同学而言学习成本和理解成本都最低。
下图是使用DolphinSQL前后的架构对比,可以清晰看出,升级前每个算法服务需要集成所有需要的客户端,升级后算法业务主程序仅需要集成Dolphin客户端即可,使用SQL可以实现整个算法计算流程。

模型预测探查

CREATE MODEL rtp_dolphin.dolphin_alime_ctr_v1_model
with (cm2_cluster = 'rtp_ads_internal',
      zk_host = 'test',
      zk_root = 'test',
      biz = 'test',
      out_fmt = 'xml',
      debug = 'false',
      attribute = '["test"]'
 );

SELECT *
FROM rtp_dolphin.dolphin_alime_ctr_v1_model
WHERE
item_list IN (1000128836)
AND qinfo = '{}'    AND context = '{"field_names":[], "docs":[] }';

向量化召回

select id, pm_squared_euclidean_distance(feature, '{0.1,0.1,0.1,0.1}') as distance 
from feature_tb where cate_id in (1,3,12)
order by distance 
asc limit 10;

组合优化

集成最优化计算函数库,支持用SQL来计算最优化/约束求解,如线性规划、整数规划、全局整数优化等能力

 SELECT * FROM ( SOLVESELECT quality IN (SELECT * FROM 
 solve_db_test where 
 adgroup_id = 461628001 limit 200) as u 
 MAXIMIZE ( SELECT SUM(quality * trade) FROM u) 
 SUBJECTTO (SELECT SUM(ctr_threshold * quality * impression  - quality * click) <= 0 FROM u), 
 (SELECT 0 <= quality <=1 FROM u),
 (select SUM(quality) <= 20 FROM u) USING solverlp) AS s 
 where quality = 1; 

▐ 实时特征SQL化生产

普通开发实时特征,需要掌握实时数据流、flink、存储等众多工程能力,才可以实现实时特征的开发,这个开发成本对于算法同学来说学习成本会很高,以至于他们都会主动放弃掉。基于算法同学对SQL的熟练掌握,我们打造了基于SQL引擎实时特征的开发、查询等能力,通过定义标准化实时特征接入流程,实现一键接入日志中间层,并基于中间层灵活定制实时特征,通过类SQL快速定义实时序列特征,业务算法无需关注资源情况,直接可通过特征SDK进行查询;整体的实时特征SQL生产如下所示,主要包含特征管理、特征生产SQL引擎、以及底层计算存储。

实时特征的定义和开发/查询

create table test_input 
(
  user_id String,
  tool_id String,
  label String,
  behavior_time String
) with(
  bizType='tt',
  topic='test_input',
  pk='user_id',
  timeColumn='behavior_time'
);

-- 创建输出表
create table test_output (
  user_id String,
  tool_id String,
  label String,
  behavior_time String
) with (
  bizType='feature',
  pk='user_id'
);

insert into table test_output
select user_id,
       concat_id(tool_id, behavior_time, 50) as tool_id,
       concat_id(label, behavior_time, 50) as label,
       concat_id(behavior_time, behavior_time, 50) as behavior_time
from test_input
group by user_id;

select user_id, tool_id from test_output where user_id in (
    1234
);

▐ 典型案例

直通车关键词推荐是B端框架支持的典型场景, 支持了数十个常用算法算子,如文本召回、向量化召回、模型预测、相关性、分词、归一化等核心算子;业务侧仅需要通过极光平台接入对应的数据表,以及定义模型、算子、以及实时特征开发;后续就可以基于已有工程框架和DolphinSQL快速搭建业务服务,通过dag配置和服务串联即可实现服务发布;

▐ 效果

目前B端算法解决方案已支持关键词推荐、出价、成效预估、如意推荐、咨询诊断以及洞察类等几十个业务场景,整体取得不错的收益,主要如下几个方面:
  • 迭代效率提升: 业务侧迭代效率从之前的1-2周降低到1-2天,新增服务可在1个小时内部署完成;
  • 运维效率提升: 每个算法服务都可实时感知到核心业务指标,出现问题可实时报警;另外基于SLS以及回流日志可实时分析日志,及时发现问题;
  • 算子复用: 核心算子的统一收口到DolphinSQL引擎中,也基于SQL服务化快速复用到其他业务场景;
  • 实时特征的开发上线: 基于SQL的实时特征开发,从之前的1-2周特征开发,降低到1-2个小时可完成特征定义、开发和上线。

▐ 展望

接下来我们会持续优化产品体验和性能,希望AI FAAS解决方案能支撑更多算法业务, 为客户提供更好的广告主工具,让客户的每一份经营都算数。主要优化方向:

  • FAAS研发平台:  继续优化faas内核, 增强faas能力; 业务框架层支持更加易用的异步执行框架;

  • 统一SQL能力: 支持物化SQL、向量化执行、丰富SQL特征生产算子等能力,提供性能更好、扩展性更好的统一SQL AI解决方案。

引用

[1] Function-As-A-Service   https://cn.aliyun.com/analyst-reports/forrester-wave-function-as-a-service-platforms-q1-2021

[2] 函数计算 https://www.aliyun.com/product/fc

[3] Spring Cloud https://spring.io/projects/spring-cloud

[4] ODPS https://www.aliyun.com/product/odps

[5] 数据湖 https://www.aliyun.com/solution/doc/datalake

[6] Sunfire  https://help.aliyun.com/apsara/agile/v_3_4_0_20200930/rdc/paas-product-introduction/what-is-sunfire.html


END


也许你还想看

广告深度学习计算:异构硬件加速实践

广告深度学习计算:召回算法和工程协同优化的若干经验



欢迎关注「阿里妈妈技术」,了解更多~

疯狂暗示↓↓↓↓↓↓↓

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存